import { axios } from '@/utils/request'

/**
 * OMS销售统计API
 */
const api = {
  salesOverview: '/oms/statistics/sales/overview',
  salesTrend: '/oms/statistics/sales/trend',
  orderStatusDistribution: '/oms/statistics/order/status-distribution',
  customerSalesRanking: '/oms/statistics/customer/sales-ranking',
  customerOrderRanking: '/oms/statistics/customer/order-ranking',
  customerOverview: '/oms/statistics/customer/overview',
  customerContribution: '/oms/statistics/customer/contribution',
  customerAnalysis: '/oms/statistics/customer/analysis',
  // 产品销售分析相关API
  productOverview: '/oms/statistics/product/overview',
  productSeriesRanking: '/oms/statistics/product/series-ranking',
  productColorAnalysis: '/oms/statistics/product/color-analysis',
  productRegionAnalysis: '/oms/statistics/product/region-analysis',
  productTrend: '/oms/statistics/product/trend',
  productDistribution: '/oms/statistics/product/distribution',
  // 区域销售分析相关API
  regionOverview: '/oms/statistics/region/overview',
  regionDistribution: '/oms/statistics/region/distribution',
  regionRanking: '/oms/statistics/region/ranking',
  regionGrowth: '/oms/statistics/region/growth',
  regionTrend: '/oms/statistics/region/trend'
}

/**
 * 获取销售概览统计数据
 * @param {Object} params 查询参数
 * @param {string} params.startDate 开始日期 (格式: yyyy-MM-dd)
 * @param {string} params.endDate 结束日期 (格式: yyyy-MM-dd)
 * @returns {Promise} 销售概览统计数据
 */
export function getSalesOverview(params) {
  return axios({
    url: api.salesOverview,
    method: 'get',
    params
  })
}

/**
 * 获取销售趋势数据
 * @param {Object} params 查询参数
 * @param {string} params.period 统计周期 (day/week/month/year)
 * @param {number} params.limit 返回数据条数
 * @returns {Promise} 销售趋势数据
 */
export function getSalesTrend(params) {
  return axios({
    url: api.salesTrend,
    method: 'get',
    params
  })
}

/**
 * 获取订单状态分布统计
 * @param {Object} params 查询参数
 * @param {string} params.startDate 开始日期
 * @param {string} params.endDate 结束日期
 * @returns {Promise} 订单状态分布数据
 */
export function getOrderStatusDistribution(params) {
  return axios({
    url: api.orderStatusDistribution,
    method: 'get',
    params
  })
}

/**
 * 获取客户概览统计数据
 * @param {Object} params 查询参数
 * @param {string} params.startDate 开始日期
 * @param {string} params.endDate 结束日期
 * @returns {Promise} 客户概览统计数据
 */
export function getCustomerOverview(params) {
  return axios({
    url: api.customerOverview,
    method: 'get',
    params
  })
}

/**
 * 获取客户销售金额排行榜
 * @param {Object} params 查询参数
 * @param {string} params.startDate 开始日期
 * @param {string} params.endDate 结束日期
 * @param {number} params.limit 返回条数，默认10
 * @returns {Promise} 客户销售金额排行数据
 */
export function getCustomerSalesRanking(params) {
  return axios({
    url: api.customerSalesRanking,
    method: 'get',
    params
  })
}

/**
 * 获取客户订单数量排行榜
 * @param {Object} params 查询参数
 * @param {string} params.startDate 开始日期
 * @param {string} params.endDate 结束日期
 * @param {number} params.limit 返回条数，默认10
 * @returns {Promise} 客户订单数量排行数据
 */
export function getCustomerOrderRanking(params) {
  return axios({
    url: api.customerOrderRanking,
    method: 'get',
    params
  })
}

/**
 * 获取客户贡献度分析数据
 * @param {Object} params 查询参数
 * @param {string} params.startDate 开始日期
 * @param {string} params.endDate 结束日期
 * @param {string} params.type 分析类型 (sales/orders)
 * @returns {Promise} 客户贡献度分析数据
 */
export function getCustomerContribution(params) {
  return axios({
    url: api.customerContribution,
    method: 'get',
    params
  })
}

/**
 * 获取新老客户分析数据
 * @param {Object} params 查询参数
 * @param {string} params.startDate 开始日期
 * @param {string} params.endDate 结束日期
 * @param {string} params.type 分析类型 (count/sales)
 * @returns {Promise} 新老客户分析数据
 */
export function getCustomerAnalysis(params) {
  return axios({
    url: api.customerAnalysis,
    method: 'get',
    params
  })
}

// ==================== 产品销售分析相关API ====================

/**
 * 获取产品销售概览统计数据
 * @param {string} startDate 开始日期 (格式: yyyy-MM-dd)
 * @param {string} endDate 结束日期 (格式: yyyy-MM-dd)
 * @returns {Promise} 产品销售概览统计数据
 */
export function getProductOverview(startDate, endDate) {
  return axios({
    url: api.productOverview,
    method: 'get',
    params: { startDate, endDate }
  })
}

/**
 * 获取产品系列销售排行榜
 * @param {string} startDate 开始日期 (格式: yyyy-MM-dd)
 * @param {string} endDate 结束日期 (格式: yyyy-MM-dd)
 * @param {number} limit 返回数据条数，默认10
 * @returns {Promise} 产品系列销售排行榜
 */
export function getProductSeriesRanking(startDate, endDate, limit = 10) {
  return axios({
    url: api.productSeriesRanking,
    method: 'get',
    params: { startDate, endDate, limit }
  })
}

/**
 * 获取产品颜色销售分析数据
 * @param {string} startDate 开始日期 (格式: yyyy-MM-dd)
 * @param {string} endDate 结束日期 (格式: yyyy-MM-dd)
 * @param {string} seriesName 产品系列筛选，可选
 * @returns {Promise} 产品颜色销售分析数据
 */
export function getProductColorAnalysis(startDate, endDate, seriesName) {
  return axios({
    url: api.productColorAnalysis,
    method: 'get',
    params: { startDate, endDate, seriesName }
  })
}

/**
 * 获取客户区域销售分析数据
 * @param {string} startDate 开始日期 (格式: yyyy-MM-dd)
 * @param {string} endDate 结束日期 (格式: yyyy-MM-dd)
 * @param {string} level 区域级别 (province/city/district)，默认province
 * @returns {Promise} 客户区域销售分析数据
 */
export function getProductRegionAnalysis(startDate, endDate, level = 'province') {
  return axios({
    url: api.productRegionAnalysis,
    method: 'get',
    params: { startDate, endDate, level }
  })
}

/**
 * 获取产品销售趋势分析数据
 * @param {string} period 统计周期 (day/week/month/year)，默认month
 * @param {number} limit 返回数据点数量，默认12
 * @param {string} dimension 分析维度 (sales/orders/quantity)，默认sales
 * @returns {Promise} 产品销售趋势分析数据
 */
export function getProductTrend(period = 'month', limit = 12, dimension = 'sales') {
  return axios({
    url: api.productTrend,
    method: 'get',
    params: { period, limit, dimension }
  })
}

/**
 * 获取产品销售分布图表数据
 * @param {string} startDate 开始日期 (格式: yyyy-MM-dd)
 * @param {string} endDate 结束日期 (格式: yyyy-MM-dd)
 * @param {string} type 分布类型 (series/color/region)，默认series
 * @returns {Promise} 产品销售分布图表数据
 */
export function getProductDistribution(startDate, endDate, type = 'series') {
  return axios({
    url: api.productDistribution,
    method: 'get',
    params: { startDate, endDate, type }
  })
}

// ==================== 区域销售分析相关API ====================

/**
 * 获取区域销售概览统计数据
 * @param {string} startDate 开始日期 (格式: yyyy-MM-dd)
 * @param {string} endDate 结束日期 (格式: yyyy-MM-dd)
 * @param {string} level 区域级别 (province/city/area)，默认province
 * @returns {Promise} 区域销售概览统计数据
 */
export function getRegionOverview(startDate, endDate, level = 'province') {
  return axios({
    url: api.regionOverview,
    method: 'get',
    params: { startDate, endDate, level }
  })
}

/**
 * 获取区域销售分布数据
 * @param {string} startDate 开始日期 (格式: yyyy-MM-dd)
 * @param {string} endDate 结束日期 (格式: yyyy-MM-dd)
 * @param {string} level 区域级别 (province/city/area)，默认province
 * @param {string} dataType 数据类型 (sales/orders/customers)，默认sales
 * @returns {Promise} 区域销售分布数据
 */
export function getRegionDistribution(startDate, endDate, level = 'province', dataType = 'sales') {
  return axios({
    url: api.regionDistribution,
    method: 'get',
    params: { startDate, endDate, level, dataType }
  })
}

/**
 * 获取区域销售排行榜
 * @param {string} startDate 开始日期 (格式: yyyy-MM-dd)
 * @param {string} endDate 结束日期 (格式: yyyy-MM-dd)
 * @param {string} level 区域级别 (province/city/area)，默认province
 * @param {number} limit 返回数据条数，默认10
 * @returns {Promise} 区域销售排行榜
 */
export function getRegionRanking(startDate, endDate, level = 'province', limit = 10) {
  return axios({
    url: api.regionRanking,
    method: 'get',
    params: { startDate, endDate, level, limit }
  })
}

/**
 * 获取区域增长率对比数据
 * @param {string} period 统计周期 (month/quarter/year)，默认month
 * @param {string} level 区域级别 (province/city/area)，默认province
 * @param {number} limit 返回数据条数，默认8
 * @returns {Promise} 区域增长率对比数据
 */
export function getRegionGrowth(period = 'month', level = 'province', limit = 8) {
  return axios({
    url: api.regionGrowth,
    method: 'get',
    params: { period, level, limit }
  })
}

/**
 * 获取区域销售趋势数据
 * @param {string} period 统计周期 (month/quarter/year)，默认month
 * @param {string} level 区域级别 (province/city/area)，默认province
 * @param {number} limit 返回数据点数量，默认12
 * @returns {Promise} 区域销售趋势数据
 */
export function getRegionTrend(period = 'month', level = 'province', limit = 12) {
  return axios({
    url: api.regionTrend,
    method: 'get',
    params: { period, level, limit }
  })
}
